package offer;

public class  Offer46 {

        public int translateNum(int num) {
            String s = String.valueOf(num);

            int a = 1, b = 1;
            for(int i = 2; i <= s.length(); i++) {
                String tmp = s.substring(i - 2, i);
                int c = tmp.compareTo("10") >= 0 && tmp.compareTo("25") <= 0 ? a + b : a;
                b = a;
                a = c;
            }
            return a;
//            char[] chars = s.toCharArray();
//            int[] dp=new int[s.length()+1];
//            if (chars.length==1){
//                return 1;
//            }
//            if (chars.length==2){
//                return 2;
//            }
////            dp[0]=1;
//            dp[1]=1;
//            dp[2]=2;
//            for (int i = 3; i <=s.length() ; i++) {
//
//               String tmp=chars[i]+chars[i-1]+"";
//
//               if (tmp.compareTo("10") >= 0 && tmp.compareTo("25") <= 0){
//                   dp[i]=dp[i-1]+dp[i-2];
//               }
//               else {
//                   dp[i]=dp[i-1];
//               }
//            }
//
//return  dp[s.length()];
        }


    public static int translateNumDp1(int num) {
        if (num < 0) {
            return -1;
        }
        char[] ch = String.valueOf(num).toCharArray();
        int length = ch.length;
        int[] dp = new int[length + 1];
        dp[0] = 1;  // 此处的初始化可以利用例子算出来
        dp[1] = 1;
        for (int i = 2; i <= length; i++) {
            int n = (ch[i - 2] - '0') * 10 + (ch[i - 1] - '0');
            if (n > 9 && n < 26) {
                dp[i] = dp[i - 1] + dp[i - 2];
            } else {
                dp[i] = dp[i - 1];
            }
        }
        return dp[length];

    }


    public static void main(String[] args) {

        Offer46 offer46 = new Offer46();
        System.out.println(offer46.translateNumDp1(624));

    }


}
